package main

import "fmt"
//import "unicode/utf8"

func set_data(x int) {
    defer func() {
        // recover()可以用来捕获异常，恢复程序或者做收尾的工作
        if err := recover(); err != nil {
			// panin: 抛出异常，使程序崩溃
			panic("error output")
        }
    }()

    // 故意制造数组越界，触发 panic
    var arr [10]int
    arr[x] = 88
}

func main() {
    set_data(20)

    // 如果能执行到这句，说明panic被捕获了
    // 后续的程序能继续运行
    fmt.Println("everything is ok")
}